package com.linkhub.oms.admin.modules.wms.domain.param;

import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.util.List;

@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value = "WarehouseArrantConfirmParam", description = "WarehouseArrantConfirmParam")
public class WarehouseArrantConfirmParam implements Serializable {

    private Request request;

    @Data
    public static class Request {
        private EntryOrder entryOrder;

        private OrderLines orderLines;

        private OrderDetails orderDetails;
    }

    @Data
    public static class EntryOrder {
        private String entryOrderCode;

        private String ownerCode;

        private String warehouseCode;

        private String entryOrderId;

        private String entryOrderType;

        private String outBizCode;

        private String confirmType;

        private String status;

        private String orderFinishedTime;

        private String receiver;

        private String remark;

        private String userDefined1;

        private String userDefined2;

        private String userDefined3;

        private String userDefined4;
    }

    @Data
    public static class OrderLines {
        private List<OrderLine> orderLine;
    }

    @Data
    public static class OrderLine {
        private String lineNo;

        private String itemCode;

        private String itemId;

        private String packUom;

        private String planQty;

        private String actualQty;

        private String actualPackUomQty;

        private String rejectQty;

        private String rejectReason;

        private String serialNo;

        private Batchs batchs;

        private String customField1;

        private String customField2;

        private String customField3;

        private String customField4;

        private String customField5;

        private String customField6;

        private String customField7;

        private String customField8;
    }

    @Data
    public static class Batchs {
        private List<Batch> batch;
    }

    @Data
    public static class Batch {
        private String actualQty;

        private String actualPackUomQty;

        private String inventoryType;

        private String virtualWarehouse;

        private String productDate;

        private String expireDate;

        private String batchCode;

        private String stockinDate;

        private String userDefined1;

        private String userDefined2;

        private String userDefined3;

        private String userDefined4;

        private String lpn;
    }

    @Data
    public static class OrderDetails {
        private List<Detail> detail;
    }

    @Data
    public static class Detail {
        private String boxNo;

        private String epc;
    }
}
